/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.List;

import javax.persistence.*;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

/**
 *
 * @author thiago
 */
@Entity
@Table(name="Fornecedor")
public class Fornecedor implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    private Long idFornecedor;    
    private String razaoSocial;    
    private String nomeFantasia;    
    private String telefone1;    
    private String telefone2;    
    private String site;    
    @OneToMany(fetch = FetchType.EAGER)
    @Fetch(FetchMode.SUBSELECT)
    private List<Endereco> endereco;
    @OneToMany(fetch = FetchType.EAGER)
    @Fetch(FetchMode.SUBSELECT)
    private List<Usuario> contatos;
    private String email;
    private double pontuacaoMedia;
    private String mCnpj;
    @ManyToMany(fetch = FetchType.EAGER)
    @Fetch(FetchMode.SUBSELECT)
    private List<Produto> produtos;
    
    
    public Fornecedor( ){
    	
    }
    
    public Fornecedor( 
    		Long idFornecedor,
    	    String razaoSocial,    
    	    String nomeFantasia,    
    	    String telefone1,    
    	    String telefone2,    
    	    String site,
    	    List<Endereco> endereco,
    	    List<Usuario> contatos,
    	    String email,
    	    double pontuacaoMedia,
    	    String mCnpj,
    	    List<Produto> produtos){
    	
    	this.idFornecedor = idFornecedor;
        this.razaoSocial = razaoSocial;    
        this.nomeFantasia = nomeFantasia;    
        this.telefone1 = telefone1;    
        this.telefone2 = telefone2;    
        this.site = site;
        this.endereco = endereco;
        this.contatos = contatos;
        this.email = email;
        this.pontuacaoMedia = pontuacaoMedia;
    	this.produtos = produtos;
    }
    
    
    public Long getIdFornecedor() {
        return idFornecedor;
    }

    public void setIdFornecedor(Long id) {
        this.idFornecedor = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idFornecedor != null ? idFornecedor.hashCode() : 0);
        return hash;
    }

    
    public String getRazaoSocial() {
		return razaoSocial;
	}

	public void setRazaoSocial(String razaoSocial) {
		this.razaoSocial = razaoSocial;
	}

	public String getNomeFantasia() {
		return nomeFantasia;
	}

	public void setNomeFantasia(String nomeFantasia) {
		this.nomeFantasia = nomeFantasia;
	}

	public String getTelefone1() {
		return telefone1;
	}

	public void setTelefone1(String telefone1) {
		this.telefone1 = telefone1;
	}

	public String getTelefone2() {
		return telefone2;
	}

	public void setTelefone2(String telefone2) {
		this.telefone2 = telefone2;
	}

	public String getSite() {
		return site;
	}

	public void setSite(String site) {
		this.site = site;
	}

	
	
	public List<Endereco> getEndereco() {
		return endereco;
	}

	public void setEndereco(List<Endereco> endereco) {
		this.endereco = endereco;
	}

	
	public List<Usuario> getContatos() {
		return contatos;
	}


	public void setContatos(List<Usuario> contatos) {
		this.contatos = contatos;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
		
	public double getPontuacaoMedia() {
		return pontuacaoMedia;
	}

	public void setPontuacaoMedia(double pontuacaoMedia) {
		this.pontuacaoMedia = pontuacaoMedia;
	}
	
	
	public String getmCnpj() {
		return mCnpj;
	}

	public void setmCnpj(String mCnpj) {
		this.mCnpj = mCnpj;
	}	
	
	public List<Produto> getProdutos() {
		return produtos;
	}

	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}

	@Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Fornecedor)) {
            return false;
        }
        Fornecedor other = (Fornecedor) object;
        if ((this.idFornecedor == null && other.idFornecedor != null) || (this.idFornecedor != null && !this.idFornecedor.equals(other.idFornecedor))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidades.Fornecedor[ id=" + idFornecedor + " ]";
    }
    
}
